package com.xiaowen.tool;

import java.util.ArrayList;
import java.util.List;

public class ListUtils {

    /**
     * 将List按指定大小分割
     *
     * @param list 需要分割的List
     * @param size 每个子List的大小
     * @param <T>  泛型类型
     * @return 分割后的子List集合
     * @throws IllegalArgumentException 如果list为null或size小于等于0
     */
    public static <T> List<List<T>> splitList(List<T> list, int size) {
        if (list == null || size <= 0) {
            throw new IllegalArgumentException("List不能为空且size必须大于0");
        }

        List<List<T>> result = new ArrayList<>();
        int total = list.size();
        for (int i = 0; i < total; i += size) {
            // 计算子List的结束位置
            int end = Math.min(i + size, total);
            // 截取子List
            List<T> subList = list.subList(i, end);
            result.add(subList);
        }
        return result;
    }

}
